// pages/evaluating/index.js
import AI from '../../utils/ai';
import DB from '../../utils/db';

const app = getApp();
async function Ai(userInput) {
  try {
    // 创建模型实例，这里我们使用 DeepSeek 大模型
    const model = wx.cloud.extend.AI.createModel("deepseek");
    // 我们先设定好 AI 的系统提示词，这里以七言绝句生成为例
    const systemPrompt =
      `# AI自我介绍智能体提示词
    ## C - Context (背景信息)
    你是一位经验丰富的AI面试官，专门帮助求职者准备面试。你的任务是根据求职者的简历，为他们生成一段适合的自我介绍。
    ## O - Objective (明确目标)
    帮助求职者准备面试，通过生成一段简洁、有针对性且吸引人的自我介绍，提升他们在面试中的表现。
    ## S - Style (希望的风格)
    正式而友好，专业但不生硬，能够展示求职者的个性和优势。
    ## T - Tone (语调)
    自信、积极、诚恳，带有一定的鼓励性，使求职者感到自信和被支持。
    ## A - Audience (目标受众)
    主要是求职者，特别是那些需要准备面试的职场新人或希望转行的职场人士。
    ## R - Response (回应类型)
    生成的自我介绍应包括以下要素：
    1. **基本信息**：姓名、教育背景。
    2. **工作经验**：简述相关的工作经历和成就。
    3. **技能和特长**：突出求职者的核心技能和个人特长。
    4. **职业目标**：简要说明求职动机和职业规划。
    ## 注意事项
    - 提供的建议仅供参考，具体情况需用户自行判断和调整。
    - 鼓励求职者根据自己的实际情况进行个性化修改，使自我介绍更加真实和有说服力。`;
    // 用户的自然语言输入，如‘帮我写一首赞美玉龙雪山的诗’
    // const userInput = "1、对待工作认真负责，善于沟通协调有较强的组织能力与团队精神；活泼开朗乐观上进有爱心并善于施教并行；上进心强勤于学习能不断提高自身的能力与综合素质。在未来的工作中，我将以充沛的精力，刻苦钻研的精神来努力工作，稳定地提高自己的'工作能力。2、性格开朗乐观，善于人际交流和沟通，具备团队合作精神；3、电脑应用熟练，熟练操作Word，Excel，Outlook，ERP等各种办公软件；4、勤奋上进好学，工作细心，条理清晰，踏实肯干，有很强的职责心；";

    const res = await model.generateText({
      // model: "deepseek-r1",
      model: "deepseek-v3-0324",
      messages: [
        { role: "system", content: systemPrompt },
        { role: "user", content: userInput },
      ],
    });
    // console.log(res.choices[0].message.content);
    wx.cloud.callFunction({
      name: 'quickstartFunctions',
      data: {
        type: 'addIntroduction',
        data: { openId: wx.getStorageSync("openId"), text: res.choices[0].message.content, date: new Date() }
      }
    })
    wx.hideLoading();
    return res.choices[0].message.content;
    // return "\n\n\n"+systemPrompt+userInput;
  } catch (err) {
    console.error("云函数调用失败：", err);
    wx.hideLoading();
    return "生成失败"
  }

}

Page({

  /**
   * 页面的初始数据
   */
  data: {
    text: '',
    value: '/pages/introduction/index',
    list: [
      { value: '/pages/index/index', icon: 'home', ariaLabel: '首页' },
      { value: '/pages/evaluating/index', icon: 'app', ariaLabel: 'AI简历测评' },
      { value: '/pages/introduction/index', icon: 'chat-bubble-1', ariaLabel: 'AI自我介绍建议' },
      // { value: 'label_3', icon: 'user', ariaLabel: '我的' },
    ],

  },
  onChange(e) {
    // this.setData({
    //    value: e.detail.value,  
    // });
    // console.log(e.detail.value)
    wx.switchTab({
      url: e.detail.value,
    })
  },

  // onVisibleChange(e) {
  //   this.setData({
  //     visible: e.detail.visible,
  //   });
  //   wx.showLoading({
  //     title: '数据加载中', // 这里设置提示词
  //     mask: true // 显示透明蒙层
  //   });
  //   this.selectIntroduction()
  // },
  onVisible(e) {
    this.setData({
      visible: false,
    });
    // wx.showLoading({
    //   title: '数据加载中', // 这里设置提示词
    //   mask: true // 显示透明蒙层
    // });

  },

  selectCreateResume(type) {
    // console.log(this.data.openId)
    DB.select('selectCreateResume', this.data.openId).then((resp) => {
      this.setData({
        record: resp.result,
      });
      this.markdown(this.data.record,type)
    }).catch(() => {
      console.log(e);
      this.setData({
        showUploadTip: true
      });
      wx.hideLoading();
    });
  },

  markdown(record,type) {
    // console.log(record.personalKeyInformation.img)
    let img = ''
    let personalKeyInformation = ''
    let evaluation = ''
    let education = ''
    let workExperience = ''
    let project = ''
    let qualificationCertificate = ''
    personalKeyInformation = `
    \n- **姓名**：${record.personalKeyInformation.userText}
    - **性别**：${record.personalKeyInformation.genderText}
    - **出生年月**：${record.personalKeyInformation.birthText}
    - **联系方式**：${record.personalKeyInformation.phone}
    - **电子邮箱**：${record.personalKeyInformation.email}
    - **求职意向**：${record.personalKeyInformation.postText}
    `
    evaluation = `
    \n${record.evaluation.evaluation}
    `
    for (var j = 0; j < record.education.length; j++) {
      education += `\n### ${record.education[j].schoolText} - ${record.education[j].majorText} - ${record.education[j].educationText}（${record.education[j].enrolText}-${record.education[j].graduateText}）
      \n- **主修课程**：${record.education[j].subject}`
    };
    for (var j = 0; j < record.workExperience.length; j++) {
      workExperience += `\n### ${record.workExperience[j].companyText} - ${record.workExperience[j].postText} （${record.workExperience[j].entryText}-${record.workExperience[j].resignText}）
      \n- **工作经历**：${record.workExperience[j].workContent}`
    };
    for (var j = 0; j < record.project.length; j++) {
      project += `\n### ${record.project[j].projectText} - ${record.project[j].roleText} （${record.project[j].entryText}-${record.project[j].resignText}）
      \n${record.project[j].projectContent}`
    };
    for (var j = 0; j < record.qualificationCertificate.length; j++) {
      qualificationCertificate += `
      \n- **证书**：${record.qualificationCertificate[j].certificate}`
    };
    const userInput = `\n# 个人简历
    \n---
    \n## 个人信息
    ${personalKeyInformation}
    \n---
    \n## 自我评价
    ${evaluation}
    \n---
    \n## 教育背景
    ${education}
    \n---
    \n## 工作经历
    ${workExperience}
    \n---
    \n## 项目经验
    ${project}
    \n---
    \n## 证书与荣誉
    ${qualificationCertificate}`;

    const systemPrompt = `# AI自我介绍智能体提示词
    ## C - Context (背景信息)
    你是一位经验丰富的AI面试官，专门帮助求职者准备面试。你的任务是根据求职者的简历，为他们生成一段适合的自我介绍。
    ## O - Objective (明确目标)
    帮助求职者准备面试，通过生成一段简洁、有针对性且吸引人的自我介绍，提升他们在面试中的表现。
    ## S - Style (希望的风格)
    正式而友好，专业但不生硬，能够展示求职者的个性和优势。
    ## T - Tone (语调)
    自信、积极、诚恳，带有一定的鼓励性，使求职者感到自信和被支持。
    ## A - Audience (目标受众)
    主要是求职者，特别是那些需要准备面试的职场新人或希望转行的职场人士。
    ## R - Response (回应类型)
    生成的自我介绍应包括以下要素：
    1. **基本信息**：姓名、教育背景。
    2. **工作经验**：简述相关的工作经历和成就。
    3. **技能和特长**：突出求职者的核心技能和个人特长。
    4. **职业目标**：简要说明求职动机和职业规划。
    ## 注意事项
    - 提供的建议仅供参考，具体情况需用户自行判断和调整。
    - 鼓励求职者根据自己的实际情况进行个性化修改，使自我介绍更加真实和有说服力。`

    AI.hunyuan("hunyuan-t1-latest", systemPrompt, userInput).then(result => {
      // console.log("AI生成的结果:", result);
      // DB.add('addIntroduction', { openId: wx.getStorageSync("openId"), text: result }).then(() => {
      //   this.selectIntroduction()
      //   // wx.hideLoading();
      // })
      // wx.hideLoading();
      if (type == 'add') {
          DB.add('addIntroduction', {openId:wx.getStorageSync("openId"),text:result}).then(() => {
          this.selectIntroduction()
          // wx.hideLoading();
        })
      }else {
        DB.update('addEvaluating', {_id:this.data.form._id,text:jsonData}).then(() => {
          this.selectIntroduction()
          // wx.hideLoading();
        })
      }
      
      // this.setData({
      //   text: app.towxml(String(result.replace(/^[\s]+/, "")), 'markdown', {
      //     theme: 'light'
      //   }),
      //   visible: true
      // })
    })
      .catch(error => {
        wx.hideLoading();
        wx.showToast({
          title: '调用AI失败',
          icon: 'error'
        })
      });
  },

  onAddAI() {
    // console.log(temp)
    wx.showLoading({
      title: 'AI评测中\n预计2-4分钟', // 这里设置提示词
      mask: true // 显示透明蒙层
    });
    // this.selectCreateResume()
    this.selectCreateResume('add')

  },
  onUpdateAI(){ 
    // console.log(temp)
    wx.showLoading({
      title: 'AI评测中\n预计2-4分钟', // 这里设置提示词
      mask: true // 显示透明蒙层
    });
    this.selectCreateResume('update')

  },


  selectIntroductionId(e) {
    wx.showLoading({
      title: '数据加载中', // 这里设置提示词
      mask: true // 显示透明蒙层
    });
    const id = e.currentTarget.dataset.id;
    DB.select('selectIntroductionId', id).then((resp) => {
      this.setData({
        text: app.towxml(resp.result.data.text, 'markdown', {
          theme: 'light'
        }),
        visible: true
      });
      wx.hideLoading();
    }).catch(() => {
      console.log(e);
      this.setData({
        showUploadTip: true
      });
      wx.hideLoading();
    });

  },

  selectIntroduction() {
    DB.select('selectIntroduction', this.data.openId).then((resp) => {
      if(resp.result.data.length > 0){
        this.setData({
          type: 1,
          form: resp.result.data[0],
          text: app.towxml(String(resp.result.data[0].text.replace(/^[\s]+/, "")), 'markdown', {
            theme: 'light'
          }),
          // console.log(jsonData); // 输出: 65
        });
      }else{
        this.setData({
          type: 0,
        });
      }
      wx.hideLoading();
    }).catch(() => {
      console.log(e);
      this.setData({
        showUploadTip: true
      });
      wx.hideLoading();
    });
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.showLoading({
      title: '数据加载中', // 这里设置提示词
      mask: true // 显示透明蒙层
    });
    this.setData({
      'openId': wx.getStorageSync("openId")
    })
    this.selectIntroduction()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  // onShareAppMessage() {

  // }
})